Development systems exist that are used by application developers to generate applications, including business applications, in response to any type of need. Such applications may utilize structured data. For instance, an object or resource may be defined for an application that describes a structure of data for instances of the resource, and describes methods for interacting with the data of the resource. The resource may include one or more properties (which may also be referred to as attributes, fields, data members, etc.), with each property having a corresponding name and a data value. Instances of the resource may be created that include data values for each property. For example, data values for properties of resource instances may be accessed from a database that stores data in the form of tables having rows and columns.
In some cases, developers may desire to define properties that are read only and that are calculated based on the values of other properties. For such calculated properties, calculation code may be defined that is used to calculate the value of the property. Furthermore, runtime code may be developed to calculate or recalculate values for the property at desired times using the calculation code.
Calculated values for a property may become invalid when the values of one or more of the properties upon which the value of the property depends (“dependent properties”) change. To avoid invalid property values, various solutions have been developed for recalculating property values for a calculated property after values of the dependent properties have changed. In one example solution, a developer may provide a recalculated property value when a dependent property changes value. However, such a solution requires manual intervention by the developer. According to another solution, the developer may define which properties the calculation is dependent upon in a manner that may be used by the runtime code to know when to recalculate the property value. However, this solution also requires additional upfront effort by the developer. In still another solution, the calculation code may be analyzed at design time to generate a list of all dependent properties that may used by the runtime code to calculate the property value. However, such a solution is complex and may result in more properties being tracked than are actually used to calculate the property value.